<!--eslint-disable -->
<template>
  <!--判断是否是标签节点-->
  <block v-if="node.node == 'element'">
    <!--button类型-->
    <button
      v-if="node.tag == 'button'"
      type="default"
      size="mini"
      :class="node.classStr"
      :style="node.styleStr"
    >
      <wx-parse-template :node="node" />
    </button>

    <!--a类型-->
    <view
      v-else-if="node.tag == 'a'"
      @click.stop="wxParseATap(node.attr, $event)"
      :class="node.classStr"
      :data-href="node.attr.href"
      :style="node.styleStr"
      style="display: inline;color: #1878F3"
    >
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>

    <!--li类型-->
    <view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>

    <!--checkbox 类型-->
    <checkbox v-else-if="node.tag == 'input'" :class="node.classStr" :style="node.styleStr" :checked="node.attr.checked" :disabled="node.attr.disabled">
    </checkbox>

    <!--table类型-->
    <wx-parse-table
      v-else-if="node.tag == 'table'"
      :class="node.classStr"
      :style="node.styleStr"
      :node="node"
    />

    <!--br类型-->
    <!-- #ifndef H5 -->
    <text v-else-if="node.tag == 'br'">\n</text>
    <!-- #endif -->
    <!-- #ifdef H5 -->
    <br v-else-if="node.tag == 'br'" />
    <!-- #endif -->

    <!--video类型-->
    <wx-parse-video :node="node" v-else-if="node.tag == 'video'" />

    <!--audio类型-->
    <wx-parse-audio :node="node" v-else-if="node.tag == 'audio'" />

    <!--img类型-->
    <wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>

    <!--strong标签-->
    <view
      v-else-if="node.tag == 'strong'"
      :class="node.classStr"
      :style="node.styleStr"
      style="display: inline;font-weight: 700;"
    >
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>
    <!--span标签-->
    <!-- #ifndef H5-PLAY || MP-WEIXIN-PLAY -->
    <view
      v-else-if="node.tag == 'span'"
      :class="node.classStr"
      :style="node.styleStr"
      style="display: inline;"
    >
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>
    <!-- #endif -->
    <!-- #ifdef H5-PLAY || MP-WEIXIN-PLAY -->
    <view
      v-else-if="node.tag == 'span'"
      :class="node.classStr"
      :style="node.styleStr"
      style="display: inline;color: #1878F3"
    >
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>
    <!-- #endif -->
    <!--em标签-->
    <view
      v-else-if="node.tag == 'em'"
      :class="node.classStr"
      :style="node.styleStr"
      style="display: inline;font-style: italic;"
    >
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>
    <!--其他标签-->
    <view v-else :class="node.classStr + getClass(node)" :style="node.styleStr">
      <block v-for="(node, index) of node.nodes" :key="index">
        <wx-parse-template :node="node" />
      </block>
    </view>
  </block>

  <!--判断是否是文本节点-->
  <block v-else-if="node.node == 'text'">{{ node.text }}</block>
</template>

<script>
/* eslint-disable */
// #ifdef APP-PLUS | H5
import wxParseTemplate from './wxParseTemplate0';
// #endif
// #ifdef MP
import wxParseTemplate from './wxParseTemplate1';
// #endif
import wxParseImg from './wxParseImg';
import wxParseVideo from './wxParseVideo';
import wxParseAudio from './wxParseAudio';
import wxParseTable from './wxParseTable';

export default {
  // #ifdef APP-PLUS | H5
  name: 'wxParseTemplate',
  // #endif
  // #ifdef MP
  name: 'wxParseTemplate0',
  // #endif
  props: {
    node: {},
  },
  components: {
    wxParseTemplate,
    wxParseImg,
    wxParseVideo,
    wxParseAudio,
    wxParseTable,
  },
  methods: {
    wxParseATap(attr, e) {
      const { href } = e.currentTarget.dataset; // TODO currentTarget才有dataset
      if (!href) return;
      let parent = this.$parent;
      while (!parent.preview || typeof parent.preview !== 'function') {
        // TODO 遍历获取父节点执行方法
        parent = parent.$parent;
      }
      parent.navigate(href, e, attr);
    },
    getClass(node) {
      if(Array.isArray(node.nodes) && node.nodes.length > 0 && node.nodes[0].attr && node.nodes[0].attr['data-task-id']) {
        return ' task';
      }
      return '';
    },
  },
  // #ifdef H5-PLAY || MP-WEIXIN-PLAY
  // 旧版本#xxx#标识处理
  created(){
    // console.log(this.node);
    if(!!this.node.text){
      this.node.text = this.node.text === "#悬赏帖#" || this.node.text === "#红包贴#" ? "" : this.node.text;
    }
  },
  // #endif
};
</script>
